import fs from 'node:fs';
import path from 'path';

// 定义测速数据目录路径
const SPEED_DATA_DIR = path.join(process.cwd(), 'llm_speed');

// 检查并创建测速数据目录，如果它不存在
if (!fs.existsSync(SPEED_DATA_DIR)) {
  fs.mkdirSync(SPEED_DATA_DIR, { recursive: true });
  console.log('[DeepSeek] 创建测速数据目录:', SPEED_DATA_DIR);
}

/**
 * 保存测速数据到JSON文件
 * 
 * @param {Object} data - 要保存的测速数据对象
 */
export async function saveSpeedData(data) {
  // 生成今天的日期字符串，格式为YYYY-MM-DD
  const today = new Date().toISOString().slice(0, 10);
  // 构造测速数据文件路径
  const filePath = path.join(SPEED_DATA_DIR, `speed_${today}.json`);

  let existingData = [];
  // 如果测速数据文件存在，读取并解析文件内容
  if (fs.existsSync(filePath)) {
    try {
      const fileContent = fs.readFileSync(filePath, 'utf-8');
      existingData = JSON.parse(fileContent);
    } catch (error) {
      console.error(`[DeepSeek] 读取测速数据文件失败: ${error.message}`);
    }
  }

  // 将新的测速数据添加到现有数据中
  existingData.push(data);

  // 将更新后的测速数据写入文件
  try {
    fs.writeFileSync(filePath, JSON.stringify(existingData, null, 2));
    console.log(`[DeepSeek] 测速数据已保存到 ${filePath}`);
  } catch (error) {
    console.error(`[DeepSeek] 保存测速数据失败: ${error.message}`);
  }
}

/**
 * 获取今天的测速数据
 * 
 * @returns {Array|null} 今天的测速数据数组，如果文件不存在或读取失败则返回null
 */
export async function getTodaySpeedData() {
  // 生成今天的日期字符串，格式为YYYY-MM-DD
  const today = new Date().toISOString().slice(0, 10);
  // 构造测速数据文件路径
  const filePath = path.join(SPEED_DATA_DIR, `speed_${today}.json`);

  // 如果测速数据文件存在，读取并解析文件内容
  if (fs.existsSync(filePath)) {
    try {
      const fileContent = fs.readFileSync(filePath, 'utf-8');
      return JSON.parse(fileContent);
    } catch (error) {
      console.error(`[DeepSeek] 读取测速数据文件失败: ${error.message}`);
      return null;
    }
  } else {
    // 如果文件不存在，返回null
    return null;
  }
}